#!/bin/sh

# pianobarctl
# This script uses a specified named pipe (FIFO) to control pianobar.
# Written by Phillip Warner

VERSION=0.2
# - Updated for new play and "stop" (pause only) controls 
#   added to pianobar starting at version 2013.05.19
# - Added quit option

# This is the FIFO that is used to control pianobar
# It must exist before running pianobar in order for remote control to work
PIANOBARCTL=~/.config/pianobar/ctl

# Control Functions
NEXT="n"
PLAYPAUSE="p"
PLAY="P"
PAUSE="S"
LOVE="+"
BAN="-"
QUIT="q"

set -e

usage() {
	echo "$(basename $0) $VERSION - by Phillip Warner"
        echo "Usage:"
        echo "  $0 [OPTION]"
	echo "Only one parameter can be used at a time."
        echo "The script's parameters are:"
        echo "  -h, --help		Help"
	echo "  -n, --next		Play Next"
	echo "  -p, --pause		Toggle Play / Pause"
	echo "  -x, --play		Play"
	echo "  -v, --stop		Pause"
	echo "  -l, --love		Love Song"
	echo "  -b, --ban		Ban Song"
	echo "  -q, --quit		Quit Program"
	echo
	echo "Current pianobar PIDs (euid=$(id -u)):"
	pgrep -u $(id -u) pianobar$
}

# Make sure the FIFO exists
if ! [ -p $PIANOBARCTL ]
then
	echo "ERROR.  FIFO $PIANOBARCTL does not exist.  Try running mkfifo $PIANOBARCTL and then restarting pianobar first.  Aborting..."
	exit 1
fi

# Make sure pianobar is running and that there is no more than one arg
if ! (pgrep -u $(id -u) pianobar$ &> /dev/null) || [ $2 ]
then
	usage
elif [ $1 ]
then
   case $1 in
      -h|--help ) usage
	;;
      -n|--next ) echo -n $NEXT > $PIANOBARCTL
	;;
      -p|--pause ) echo -n $PLAYPAUSE > $PIANOBARCTL
	;;
      -x|--play ) echo -n $PLAY > $PIANOBARCTL
	;;
      -v|--stop ) echo -n $PAUSE > $PIANOBARCTL
	;;
      -l|--love ) echo -n $LOVE > $PIANOBARCTL
	;;
      -b|--ban ) echo -n $BAN > $PIANOBARCTL
	;;
      -q|--quit ) echo -n $QUIT > $PIANOBARCTL
	;;
      * ) usage
        ;;
   esac
else
	usage
fi

exit
